#ifndef __MY_LOGGER_H
#define __MY_LOGGER_H

#include <string>

typedef enum {
    LOG_ERROR = 0,
    LOG_WARNING,
    LOG_INFO,
    LOG_DEBUG
} LogLevel;

class MyLogger
{
protected:
    LogLevel logOutLevel = LOG_INFO;
private:
    /* data */
public:
    MyLogger() = default;
    virtual ~MyLogger() = default;

    virtual void Debug(const std::string &msg) = 0;
    virtual void Info(const std::string &msg) = 0;
    virtual void Warning(const std::string &msg) = 0;
    virtual void Error(const std::string &msg) = 0;
    virtual void Print(const std::string &msg) = 0;

    void SetOutLevel(LogLevel logOutLevel);
};
#endif